﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Archivos;
using Iudicium.Archivos.CRN;
using Iudicium.Utilitarios;

public partial class Servicios_OpenFile : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    protected void Page_Load(object sender, EventArgs e)
    {
        int fileToDownload = 0;
        try
        {
            fileToDownload = Convert.ToInt32(Session["FILE_ID"]);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo convertir FileIdToDownloadHiddenField.Value a un valor entero", ex);
        }
        Session["FILE_ID"] = null;
        if (fileToDownload <= 0)
            return;

        Archivo objArchivo = null;
        try
        {
            objArchivo = ArchivoCRN.GetArchivoById(fileToDownload);
        }
        catch (Exception ex)
        {
            log.Error("Ocurrio un error al obtener el archivo seleccionado", ex);
        }

        if (objArchivo == null)
            return;

        Response.Clear();
        byte[] document = Utilitarios.GetBytesFromFile(objArchivo.RutaAlmacenamiento);
        string extension = objArchivo.Extension;
        string fileName = objArchivo.Nombre;

        string mimeType = Utilitarios.GetFileMIMEType(extension);
        if (mimeType != null)
        {
            Response.ContentType = mimeType;
        }
        Response.AddHeader("Content-Disposition", "attachment;Filename=\"" + HttpUtility.UrlPathEncode(fileName) + "\"");
        Response.BinaryWrite(document);
        Response.Flush();
        Response.End();
    }
}